package com.xauto.pioneer.appuser.http;

import android.content.Context;

import com.baidu.location.BDLocation;
import com.xauto.pioneer.appuser.model.DamageImageInfo;
import com.xauto.pioneer.appuser.model.PageInfo;

import org.json.JSONArray;
import org.json.JSONObject;

import java.util.List;

/**
 * Created by Lemon on 2015/8/7 15:23.
 * Desc:接口
 */
public interface LHttpInterface {

    /***
     * 01 获取配置文件
     * @param mContext 上下文
     * @param handler callback
     */
    void getConfig(Context mContext, BaseLHttpHandler handler);

    /***
     * 02 获取验证码
     * @param mContext 上下文
     * @param mobile 手机号
     * @param handler callback
     */
    void getVerifyCode(Context mContext, String mobile, BaseLHttpHandler handler);

    /***
     * 05 快速登录\注册
     * @param mContext 上下文
     * @param mobile 手机号
     * @param code MD5加密("code"+"salt_key")
     * @param handler callback
     */
    void quickLogin(Context mContext, String mobile, String code, BaseLHttpHandler handler);

    /***
     * 07 登出
     * @param mContext 上下文
     * @param member_id 会员id
     * @param mobile_token 设备推送号码
     * @param handler callback
     */
    void logout(Context mContext, String member_id, String mobile_token, BaseLHttpHandler handler);

    /***
     * 10 图片上传
     * @param mContext 上下文
     * @param member_id 会员id
     * @param image_type 图片类型(1-头像/2-身份证照/3-手持身份证照/4-驾照/…)
     * @param image
     * @param handler callback
     */
    void editImage(Context mContext, String member_id, String image_type, String image, BaseLHttpHandler handler);

    /***
     * 08 获取用户信息
     * @param mContext 上下文
     * @param member_id 会员id
     * @param handler callback
     */
    void getMemberDetail(Context mContext, String member_id, BaseLHttpHandler handler);

    /***
     * 9 编辑用户信息
     * @param mContext 上下文
     * @param member_id 会员id
     * @param type  1-头像; 2-身份证; 3-手持身份证; 4-驾照; 5-会员姓名; 6-手机号;
     * @param code MD5加密("code"+"salt_key") *此状态只有在mobile时需要传入(type=2时)
     * @param value 修改的参数值
     * @param handler callback
     */
    void editMemberInfo(Context mContext, String member_id, String type, String value, String code, BaseLHttpHandler handler);
    /***
     * 9-1 审核车辆信息-用户证件拍照
     */
    void editMemberPcInfo(Context mContext, String member_id, String idCardPath, String idCardPath_back, String idCardPath_Body, BaseLHttpHandler handler);
    /**
     *
     * @param mContext 上下文
     * @param member_id 会员id
     * @param value1  身份证
     * @param value2 半身照
     * @param code MD5加密("code"+"salt_key") *此状态只有在mobile时需要传入(type=2时)
     * @param handler callback
     */
    void submitIdentificationCardInfo(Context mContext, String member_id,  String value1,String value2, String code, BaseLHttpHandler handler);

    /***
     * 03 基本-获取地区列表
     * @param mContext 上下文
     * @param handler callback
     */
    void getRegionList(Context mContext, BaseLHttpHandler handler);

    /***
     * 04 基本-获取银行列表
     * @param mContext 上下文
     * @param useType 使用类型(1-热门/2-全部)默认是1
     * @param handler callback
     */
    void getBankList(Context mContext,String useType, BaseLHttpHandler handler);

    /***
     * 06 会员-校验会员信息
     * @param mContext 上下文
     * @param validate_type 校验类型(1-手机号码/2-邮箱)
     * @param validate_value 需要校验是否存在的值
     * @param handler callback
     */
    void validateMemberInfo(Context mContext, String validate_type, String validate_value, BaseLHttpHandler handler);

    /***
     * 17 基本-通过坐标获取城市ID
     * @param mContext 上下文
     * @param longitude_num 经度
     * @param latitude_num 纬度
     * @param handler callback
     */
    void getRegionCoordinate(Context mContext, String longitude_num, String latitude_num, BaseLHttpHandler handler);

    /***
     * 12 获取闪屏广告
     * @param mContext 上下文
     * @param handler callback
     */
    void getIndexBanner(Context mContext, BaseLHttpHandler handler);

    /***
     * 15 获取取车网点列表
     * @param mContext 上下文
     * @param handler callback
     */
    void getPickParkingSiteList(String MemberID,Context mContext, String longitude_num, String latitude_num, String distance_range, PageInfo pageInfo, BaseLHttpHandler handler);

    /***
     * 16 获取取车网点车辆列表
     * @param mContext 上下文
     * @param parking_site_id 网点ID
     * @param handler callback
     */
    void getParkingSiteCarList(Context mContext, String parking_site_id, PageInfo pageInfo, BaseLHttpHandler handler);

    /***
     * 13 信息-获取数据信息
     * @param mContext 上下文
     * @param request_type 请求类型
     * @param handler callback
     */
    void getWebInfo(Context mContext, String request_type,String  member_id, String car_order_no,String car_no, BaseLHttpHandler handler);

    /***
     *  14 意见反馈
     * @param mContext
     * @param member_id
     * @param feedback_text
     */
    void getFeedback(Context mContext, String member_id, String feedback_text,BaseLHttpHandler handler);

    /***
     *  20 保证金-提交保证金
     * @param mContext
     * @param member_id 会员id
     * @param payment_code 支付方式CODE
     */
    void submitDeposit(Context mContext, String member_id,String Num, String payment_code, BaseLHttpHandler handler);

    /***
     *  22 保证金-提交保证金
     * @param mContext
     * @param member_id 会员id
     * @param car_no 车辆编号
     */
    void startCarOrder(Context mContext, String member_id, String car_no, BaseLHttpHandler handler);
    /***
     *  23 获取车辆订单详情
     * @param mContext
     * @param member_id 会员id
     * @param car_order_no 车辆订单编号
     */
    void getCarOrderDetail(Context mContext, String member_id, String car_order_no, BaseLHttpHandler handler);

    /***
     *  29 获取车辆损伤列表
     * @param mContext
     * @param member_id 会员id
     * @param car_no 车辆编号
     */
    void getCarDamageList(Context mContext, String member_id, String car_no, BaseLHttpHandler handler);

    /***
     *  30 获取车辆计费规则
     * @param mContext
     */
    void getCarBillingRulesList(Context mContext, BaseLHttpHandler handler);

    /**
     * 24 订单-操作车辆订单
     * @param mContext
     * @param member_id
     * @param car_order_no
     * @param operator_type 操作类型(1-开始用车/2-取消订单/3-编辑订单)
     * @param car_order_info
     * @param handler
     */
    void operatorCarOrder(Context mContext, String member_id, String car_order_no, String operator_type, List<DamageImageInfo> car_order_info, BaseLHttpHandler handler);
    /**
     * 25 操作车辆
     * @param mContext
     * @param member_id
     * @param car_order_no
     * @param operator_type 操作类型(1-打开车门/2-锁闭车辆/3-鸣笛找车)
     * @param handler
     */
    void operatorCar(Context mContext, BDLocation bdLocation, String member_id, String car_order_no, String operator_type, BaseLHttpHandler handler);

    /**26 车辆-获取还车网点列表
     * @param mContext
     * @param member_id
     * @param car_order_no
     * @param longitude_num
     * @param latitude_num
     * @param distance_range
     * @param pageInfo
     * @param handler
     */
    void getReturnParkingSiteList(Context mContext, String member_id, String car_order_no, String longitude_num, String latitude_num,String distance_range, PageInfo pageInfo, BaseLHttpHandler handler);

    /**27车辆-获取网点车位列表
     * @param mContext
     * @param member_id
     * @param car_order_no
     * @param pageInfo
     * @param handler
     */
    void getParkingSpaceList(Context mContext, String member_id, String car_order_no, String parking_site_no, PageInfo pageInfo, BaseLHttpHandler handler);

    /**28 订单-申请还车
     * @param mContext
     * @param member_id
     * @param car_order_no
     * @param car_order_info
     * @param handler
     */
    void applyReturnCar(Context mContext, String member_id, String car_order_no, JSONObject car_order_info, BaseLHttpHandler handler);

    /**
     * 49 检查车辆网点信息
     * @param mContext
     * @param member_id
     * @param car_order_no
     * @param parking_site_no
     * @param longitude_num
     * @param latitude_num
     * @param handler
     */
    void checkParkingSite(Context mContext, String member_id, String car_order_no, String parking_site_no, String longitude_num, String latitude_num, BaseLHttpHandler handler);
    /**
     *  新增还车第一步
     * @param mContext
     * @param member_id
     * @param parking_site_no
     * @param longitude_num
     * @param latitude_num
     * @param handler
     */
    void returnCar(Context mContext,String car_order_no, String member_id, String parking_site_no, String longitude_num, String latitude_num, BaseLHttpHandler handler);
    /**
     * 54 提交加油信息
     * @param mContext
     * @param member_id
     * @param car_order_no
     * @param car_refuel_info
     * @param handler
     */
    void submitCarRefuel(Context mContext, String member_id, String car_order_no, JSONObject car_refuel_info, BaseLHttpHandler handler);
    /**
     * 34 订单-获取会员订单列表
     * @param mContext
     * @param member_id
     * @param handler
     */
    void getCarOrderList(Context mContext, String member_id,PageInfo pageInfo, BaseLHttpHandler handler);
    /**
     * 35 订单-获取会员订单详情
     * @param mContext
     * @param member_id
     * @param handler
     */
    void getCarOrderDetailInfo(Context mContext, String member_id,String car_order_no, BaseLHttpHandler handler);
    /**
     * 36 优惠-获取会员优惠券列表
     * @param mContext
     * @param car_order_no
     * @param voucher_type 优惠券类型(1-未使用/2-已使用/0-全部)
     * @param handler
     */
    void getVoucherList(Context mContext,String member_id, String voucher_type,String car_order_no,PageInfo pageInfo, BaseLHttpHandler handler,String Route);
    /**
     * 37 保证金-获取会员保证金消费列表
     * @param mContext
     * @param handler
     */
    void getDepositTransactionList(Context mContext,String member_id,PageInfo pageInfo, BaseLHttpHandler handler);
    /**
     * 38 账户-获取会员账户消费列表
     * @param mContext
     * @param handler
     */
    void getTransacitonList(Context mContext,String member_id,PageInfo pageInfo, BaseLHttpHandler handler);
    /**
     * 39 保证金-保证金提现
     * @param mContext
     * @param handler
     */
    void submitTransaction(Context mContext,String member_id,String transaction_amount,String member_account_id,String bank_id,String bank_account_name,String bank_account_number, BaseLHttpHandler handler);
    /**
     * 60 用户认证银行卡信息
     * @param mContext
     * @param handler
     */
    void TakeCar_submitTransaction(Context mContext,String userName,String member_id,String bank_id,String bank_account_name,String bank_account_number,String IdNumber,BaseLHttpHandler handler);
    /**
     * 40 余额提现
     * @param mContext
     * @param handler
     */
    void submitAmountTransaction(Context mContext,String member_id,String transaction_amount,String member_account_id,String bank_id,String bank_account_name,String bank_account_number, BaseLHttpHandler handler);
    /**
     * 50 会员-获取会员账户信息
     * @param mContext
     * @param handler
     */
    void getMemberAccountInfo(Context mContext,String member_id, BaseLHttpHandler handler);
    /**
     * 43 获取分享相关信息
     * @param mContext
     * @param share_type 分享类型(1-分享软件)默认为1
     * @param handler
     */
    void getShareInfo(Context mContext,String share_type, BaseLHttpHandler handler);
    /**
     * 51 账户-余额充值
     * @param mContext
     * @param member_id
     * @param balance_amount 余额充值
     * @param payment_code   支付方式
     * @param handler
     */
    void addBalanceOrder(Context mContext,String member_id,String balance_amount,String payment_code, BaseLHttpHandler handler);
    /**
     * 52 账户-提交余额充值
     * @param mContext
     * @param member_id
     * @param balance_order_no 余额订单编号
     * @param handler
     */
    void submitBalanceOrder(Context mContext,String member_id,String balance_order_no, BaseLHttpHandler handler);
    /**
     * 53 账户-查询余额充值状态
     * @param mContext
     * @param member_id
     * @param balance_order_no 余额订单编号
     * @param handler
     */
    void getBalanceOrderDetail(Context mContext,String member_id,String balance_order_no, BaseLHttpHandler handler);
    /**
     * 31 基本-获取日期数据列表
     * @param mContext
     * @param start_date 开始日期(yyyy-mm-dd)
     * @param end_date 结束日期(yyyy-mm-dd)
     * @param handler
     */
    void getSettingDateList(Context mContext,String start_date,String end_date, BaseLHttpHandler handler);
    /**
     * 32 订单-订单结算
     * @param mContext
     * @param handler
     */
    void checkoutOrder(Context mContext,String member_id,String car_order_no, String payment_code, String voucher_member_id, String is_use_balance_amount, BaseLHttpHandler handler);
    /**
     * 33 订单-提交订单
     * @param mContext
     * @param handler
     */
    void submitCarOrder(Context mContext,String member_id,String car_order_no,BaseLHttpHandler handler);
    /**
     * 18 基本-提交推送设备信息
     * @param mContext
     * @param handler
     */
    void editPushDevice(Context mContext,String member_id,String mobile_token,BaseLHttpHandler handler);
    /**
     * 55 会员-记录登录状态
     * @param mContext
     * @param handler
     */
    void loginWithToken(Context mContext,String member_id,BaseLHttpHandler handler);
    /**
     * 41 消息列表
     * @param mContext
     * @param handler
     */
    void getMessageList(Context mContext,String member_id,PageInfo pageInfo,BaseLHttpHandler handler);
    /**
     * 42
     * @param mContext
     * @param handler
     */
    void getMessageDetail(Context mContext,String member_id,String message_id,BaseLHttpHandler handler);
    /**
     * 21
     * @param mContext
     * @param handler
     */
    void getDepositDetail(Context mContext,String member_id,BaseLHttpHandler handler);
    /**
     * 11 车辆-获取还车网点详情
     * @param mContext
     * @param member_id
     * @param car_order_no
     * @param longitude_num
     * @param latitude_num
     * @param parking_site_no
     * @param handler
     */
    void getReturnParkingSiteDetail(Context mContext,String member_id,String car_order_no,double longitude_num,double latitude_num,String parking_site_no,BaseLHttpHandler handler);
    /**
     *
     * @param mContext
     * @param handler
     */
    void getGuideCategoryList(Context mContext,PageInfo pageInfo, BaseLHttpHandler handler);
    /**
     *
     * @param mContext
     * @param handler
     */
    void getGuideList(Context mContext, String guide_category_id,PageInfo pageInfo, BaseLHttpHandler handler);
    /**
     *
     * @param mContext
     * @param handler
     */
    void getGuideDetail(Context mContext, String guide_id,BaseLHttpHandler handler);
    /**
     *
     * @param mContext
     * @param member_id
     * @param handler
     */
    void getCarRefuelList(Context mContext, String member_id,String car_order_no,PageInfo pageInfo, BaseLHttpHandler handler);
    /**
     *
     * @param mContext
     * @param member_id
     * @param handler
     */
    void getCarOrderOtherList(Context mContext, String member_id,String car_order_no,PageInfo pageInfo, BaseLHttpHandler handler);
    /**
     *
     * @param mContext
     * @param member_id
     * @param handler
     */
    void getCarRefuelDetail(Context mContext, String member_id,String car_refuel_id, BaseLHttpHandler handler);
    /**
     *
     * @param mContext
     * @param member_id
     * @param handler
     */
    void getCarOrderOtherDetail(Context mContext, String member_id,String car_refuel_id, BaseLHttpHandler handler);
    /**
     * 查询设备订单信息
     * @param mContext
     * @param member_id
     * @param handler
     */
    void getDeviceNotifyInfo(Context mContext, String member_id, BaseLHttpHandler handler);
    /**
     * 查询用户消息列表
     * @param mContext
     * @param member_id
     * @param handler
     */
    void getMemberMessageList(Context mContext, String member_id,String message_status , PageInfo pageInfo, BaseLHttpHandler handler);
    /**
     * 查询人是否在汽车周围
     * @param mContext
     * @param member_id
     * @param handler
     */
    void getMemberToCar(Context mContext, String member_id,String car_order_no ,String member_latitude,String member_longitude ,BaseLHttpHandler handler);
    /**
     * 车辆异常反馈
     * @param mContext
     * @param member_id
     * @param handler
     */
    void getOrderFeedbackInfo(Context mContext, String member_id,String car_order_no ,Object car_object,BaseLHttpHandler handler);
    /**
     * 取车拍照
     * @param mContext
     * @param member_id
     * @param handler
     */
    void getPreReturnCar(Context mContext, String member_id, String car_order_no , JSONArray arry, BaseLHttpHandler handler);
    /**
     * 用户消息详情
     * @param mContext
     * @param member_id
     * @param handler
     */
    void getMemberMessageDateil(Context mContext, String member_id, String member_message_id , BaseLHttpHandler handler);
    /**71 订单-重新进行结算
     * @param mContext
     * @param member_id
     * @param car_order_no
     * @param car_order_info
     * @param handler
     */
    void OrderCostAgain(Context mContext, String member_id, String car_order_no, JSONObject car_order_info, BaseLHttpHandler handler);

    /**
     * 60 信息-提交发票信息
     * @param mContext
     * @param member_id
     * @param receipt_name
     * @param receipt_bank
     * @param receipt_address
     * @param receipt_phone
     * @param receipt_type
     * @param receipt_num
     * @param receipt_message
     * @param handler
     */
    void SetReceiptInfo(Context mContext, String member_id, String receipt_name, String receipt_bank, String receipt_address, String receipt_phone,
                        String receipt_type, String receipt_num, String receipt_message,String receipt_mailaddr,BaseLHttpHandler handler);
    /**61 信息-获取发票信息
     * @param mContext
     * @param member_id
     */
    void getReceiptInfo(Context mContext, String member_id, BaseLHttpHandler handler);

    /**
     * 62 获取用车可开票列表
     * @param mContext
     * @param member_id
     * @param handler
     */

    void getCarReceiptableList(Context mContext,String member_id,BaseLHttpHandler handler);
    /**
     * 63  获取可开票总和
     * @param mContext
     * @param member_id
     * @param handler
     */
    void getReceiptsCount(Context mContext,String member_id,JSONArray receiptIds,BaseLHttpHandler handler);
    /**
     * 65  提交开票数据
     * @param mContext
     * @param member_id
     * @param handler
     */
    void submitApplyReceipt(Context mContext,String member_id,JSONArray receiptIds,BaseLHttpHandler handler);

    /**
     * 66  提交开票邮费
     * @param mContext
     * @param member_id
     * @param receipt_order_id
     * @param handler
     */
    void submitReceiptOrder(Context mContext,String member_id,String receipt_order_id,String payment_code,String is_use_balance_amount,BaseLHttpHandler handler);

    /**
     * 获取开票历史列表
     * @param context
     * @param member_id
     * @param handler
     */
    void getInvoicedList(Context context,String member_id,BaseLHttpHandler handler);
    /**
     * 68  开票邮费结算
     * @param mContext
     * @param member_id
     * @param payment_code
     * @param is_use_balance_amount
     * @param handler
     */
    void checkoutForReceipt(Context mContext,String member_id, String payment_code, String is_use_balance_amount, BaseLHttpHandler handler);
    /**
     * 69  获取包月停车场站点列表
     * @param mContext
     * @param member_id
     * @param handler
     */
    void getMonthlyrentSiteList(Context mContext,String member_id,BaseLHttpHandler handler);
    /**
     * 70  获取包月停车场计费规则
     * @param mContext
     * @param member_id
     * @param parking_id
     * @param handler
     */
    void getMonthlyrentRule(Context mContext,String member_id,String parking_id,BaseLHttpHandler handler);

    /**
     * 71  创建包月停车场订单
     * @param mContext
     * @param member_id
     * @param parking_rule_id
     * @param car_no
     * @param handler
     */
    void createParkingrentOrder(Context mContext,String member_id,String parking_rule_id,String parking_id,String car_no,BaseLHttpHandler handler);

    /**
     * 72   提交包月停车场订单
     * @param mContext
     * @param member_id
     * @param parking_order_id
     * @param payment_code
     * @param is_use_balance_amount
     * @param handler
     */
    void submitParkingrentOrder(Context mContext,String member_id,String parking_order_id,String payment_code,String is_use_balance_amount,BaseLHttpHandler handler);

    /**
     * 73 包月支付选择方式
     * @param mContext
     * @param member_id
     * @param parking_order_id
     * @param payment_code
     * @param is_use_balance_amount
     * @param handler
     */
    void checkoutParkingrentOrder(Context mContext,String member_id,String parking_order_id,String payment_code,String is_use_balance_amount,BaseLHttpHandler handler);
}
